Release v0.4.0#22
Merged
Merged
Conversation
Remove unused self-collision plumbing, update domain-randomization terms to match the active General-Tracking setup, and keep play-mode evaluation deterministic. The rigid-body perturbation now uses physics-consistent pseudo-inertia randomization instead of mass-only scaling. Constraint: Playback and benchmark paths use play mode and must stay deterministic Constraint: Domain randomization must stay within current mjlab APIs and repo conventions Rejected: Keep dr.body_mass randomization | leaves inertia inconsistent with mass changes Rejected: Preserve startup DR in play mode | makes playback and benchmark nondeterministic Confidence: high Scope-risk: narrow Reversibility: clean Directive: If training-only events change again, update _TRAIN_ONLY_EVENTS and the task registry/domain-randomization tests together Tested: pytest tests/test_task_registry.py tests/test_domain_randomization.py -q Tested: git diff --check Not-tested: pytest tests/ -q | collection currently fails in tests/test_math_utils.py because train_mimic.pose is missing in this tree
General-Tracking-G1 now uses adaptive Z-only anchor and end-effector termination thresholds, while separating foot XYZ checks into an explicit termination term. Benchmark video mode also disables the new foot termination so long clip capture keeps the previous behavior. Constraint: Low-height reference poses need looser failure thresholds without weakening normal upright tracking Rejected: Raise all tracking thresholds globally | too permissive for upright motions and hides real failures Confidence: high Scope-risk: moderate Reversibility: clean Directive: Keep benchmark/video termination overrides in sync whenever new tracking failure terms are added Tested: pytest tests/test_termination_config.py tests/test_task_registry.py -q Not-tested: Full training run and benchmark rollout on real motion clips
The training env no longer keeps a separate foot XYZ termination term. This commit removes that term from the assembled General-Tracking-G1 config and updates the regression test to assert the reduced termination surface directly. Constraint: Training resets should match the currently intended termination policy without reintroducing premature foot-specific failures Rejected: Keep foot_pos_xyz configured but unused in tests | leaves the env behavior and regression contract out of sync Confidence: high Scope-risk: narrow Reversibility: clean Directive: If foot-specific reset logic is reintroduced, update both the env assembly and termination regression test together Tested: pytest tests/test_termination_config.py tests/test_task_registry.py -q Not-tested: Full training run or benchmark rollout with real motion clips
Standardize the public dataset spec names to twist2/seed/lafan1, update default motion-file references, and add a seed_filter_preset path that records filtering diagnostics in build reports. This keeps docs, scripts, and tests aligned with the renamed configs while making SEED curation reproducible and observable. Constraint: Keep dataset builder behavior fail-fast and avoid adding new dependencies Rejected: Preserve versioned spec filenames as the primary defaults | keeps user-facing commands and docs inconsistent Confidence: high Scope-risk: moderate Reversibility: clean Directive: If external automation still depends on the old YAML filenames, add explicit compatibility aliases before changing defaults again Tested: pytest tests/test_dataset_v2.py tests/test_review_pipeline.py tests/test_train_script.py -q Not-tested: End-to-end dataset build against real SEED/twist2 assets
Keep the canonical `seed.yaml` spec pointed at the full SEED source while moving the strict Groot-filtered variant into a dedicated `seed_clean.yaml` spec. This makes the public config names match their actual coverage and keeps the curated path explicit for reproducible review or training flows. Constraint: Keep existing dataset-builder semantics and avoid hidden filtering in the default SEED spec Rejected: Leave `groot_strict` inside `seed.yaml` | makes the canonical SEED entry point silently exclude source data Confidence: high Scope-risk: narrow Reversibility: clean Directive: Use `seed_clean.yaml` for strict curated SEED runs; keep `seed.yaml` as the unfiltered baseline unless downstream defaults are updated intentionally Tested: `pytest tests/test_dataset_v2.py -q` Not-tested: End-to-end dataset build against real SEED assets
…tion' into merge_train
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Asset verification
Checks